Amazon S3
개요
Simple Storage Service.[1]
줄여서 S3라고 부른다.
4.RESOURCE/KNOWLEDGE/AWS/AWS에서 제공하는 대표적인 4.RESOURCE/KNOWLEDGE/개념/스토리지#Object Storage이다.
실질적으로 오브젝트 스토리지가 이 서비스로부터 시작됐다고도 이야기된다.
특징
오브젝트 스토리지로서의 특징들을 기본적으로 가지고 있다.
키-값 방식을 통한 데이터 액세스하고, 저장하는 파일의 크기가 자유롭다.
다른 스토리지에 비해 상대적으로 속도는 느리다고 하나, 가격이 싸서 일반인들도 비교적 많이 쓰는 편이다.
기본적으로 버킷이라는 리소스를 리전 단위로 만들고, 여기에 데이터를 저장한다.
ECR의 경우 내부적으로 S3가 사용된다.
그래서 실제로 사용해보면 S3로도 비용이 청구되는 걸 확인할 수 있다.
기능
엄청 많다..
일단 스토리지에 대한 모니터링, 분석.
여기에 액세스 관리와 백업, 복제, 배치 작업, 수명 주기 등의 다양한 기능을 수행할 수 있다.
이 기능들을 다 따로 정리해두는 게 좋을 것 같기는 하다.
작동 방식
기본적으로 최소 3개의 AZ에 데이터가 중복 저장하여 고고고고가용성!을 달성한다.
99.99999..%의 내구성을 자랑한다.
대충 9가 11개인데, 그만큼 안전하게 데이터를 보관할 수 있다는 것이 하나의 특징이다.
그렇지만 사용자 설정에 따라 비용이나 지연 시간 최소화를 위해 여러 리전이나 단일 az만 사용하는 것도 가능하다.
리전으로도 해결할 수 없는 요구 사항이 있다면 [[#S3 Outposts]]를 통해 온프레미스에 데이터를 저장하는 것도 가능하다.
종류
위에서 말했듯 사용자는 본인의 요구사항에 맞게 다양한 스토리지를 사용할 수 있다.
기본적으로는 접근량을 기준으로 티어로 구분짓는다.
- 스탠다드 티어: 자주 접근하는 데이터를 저장.
- 인프리퀀트 액세스 티어 (IA): 가끔만 접근하지만 빠르게 접근하고 싶은 데이터를 저장.
- 아카이브 티어 (글래시어): 거의 사용되지 않는 데이터를 보관.
여기에 가용영역을 어떻게 쓰냐에 따라서도 또 종류가 조금 나뉜다.
하나의 가용영역만 쓴다면 One Zone이라고 부른다.
S3 Intelligent-Tiering
사용자의 데이터 접근 패턴을 파악하고, 비용 효율적인 티어로 자동으로 이동을 시켜주는 옵션.
간단하게는 아래의 다른 종류들로 AWS가 알아서 판단하고 설정해준다는 것이다.
사용자의 데이터 접근 패턴이 일정하지 않거나, 관리 리소스를 줄이고 싶을 때 적합하다고 할 수 있겠다.
최소 적격 객체 크기가 없지만 128KB보다 작은 객체는 자동 계층화에 적합하지 않다.
알아서 모니터링과 이동 자동화를 진행하기에 이에 대한 요금은 발생한다.
티어 간 이동에 대해서 비용을 부과하지는 않는다.
또 데이터 검색에 대한 비용도 부과하지 않는다고 한다.
이게 무슨 말이냐, 아래에서 볼 IA와 글래시어는 원래 데이터를 꺼내고자 할 때 읽기(retrieval) 작업이 내부적으로 수행된다.
이것에 대한 비용이 발생하지 않는다는 것이다.
다음은 aws에서 이야기하는 it의 기능이다.
- Frequent, Infrequent 및 Archive Instant Access 티어는 S3 Standard와 동일한 짧은 대기 시간과 높은 처리량 성능 제공
- Infrequent Access 티어는 스토리지 비용을 최대 40% 줄입니다.
- Archive Instant Access 티어는 스토리지 비용을 최대 68% 줄입니다.
- 드물게 액세스되는 객체를 위한 옵트인 비동기 아카이브 기능
- Deep Archive Access 티어는 드물게 액세스되는 객체에 대해 Glacier Deep Archive와 동일한 성능을 제공하면서 스토리지 비용이 최대 95% 더 낮음
S3 Standard
가장 기본적인 S3이다.
그냥 자주 접근하는 데이터를 담는 스토리지 정도로 생각하면 되겠다.
S3 Express One Zone
단일 가용 영역으로 구성된 클래스.
자주 액세스하는 데이터와 지연 시간에 민감한 애플리케이션에 대해 10밀리초 미만의 일관된 데이터 액세스를 제공한다.
S3 Standard에 비해 데이터 액세스 속도가 10배 빠르고 az를 적게 쓰니 요청 비용을 50% 절감할 수 있다.
버킷을 만들 때 리전 말고 az까지 설정할 수 있다.
S3 디렉터리 버킷이라는 다른 유형의 버킷이 사용된다고 한다.
그래서 고속으로 데이터 처리가 필요한 Amazon SageMaker 등에 활용된다고 한다.
S3 Standard-Infrequent Access(S3 Standard-IA)
Infrequent Access, 즉 빈번하지 않은 데이터를 저장하는 스토리지 클래스이다.
가격도 조금 더 저렴해서 주로 장기 스토리지, 백업 및 재해 복구용으로 쓰인다.
그러면서도 스탠다드와 동일한 수준의 지연시간과 처리량을 자랑한다고 말은 하는데..
과연..?
가용성이 99.9퍼로 조금 더 낮으며, 데이터 장애가 발생했을 때 복구 비용이 별도 청산된다.
S3 One Zone-Infrequent Access(S3 One Zone-IA)
자주 안 써도 그나마 빠르게 액세스 하고 싶을 때 사용된다.
가용성, 복원력이 많이 필요하지 않은 데이터를 저장할 때 적합하다.
가령 한 리전에서 다른 리전으로 데이터 백업을 시킨다면, 그 정도는 이런 거로 할 수 도 있다는 것.
S3 Glacier Instant Retrieval
여기에서부터는 그냥 오래, 아카이브하고 싶은 데이터를 저장하는 영역으로 글래시어(Glacier)라고 부른다.
진짜 기록 보관만 하고 보지도 않을 데이터를 저장할 때, 1년에 한두번 꺼낼까 하는 것들에 대해 사용하는 것들이라고 할 수 있겠다.
그중에서 이 Instant Retrieval은 꺼낼 때 빠른 속도(밀리초)가 보장되기 바랄 때 사용된다.
S3 Glacier Flexible Retrieval(기존 S3 Glacier)
이게 기본 글래시어.
위의 instant보다는 10퍼 정도의 비용 절약이 있다고 한다.
S3 Glacier Deep Archive
가장 딥한 글래시어!
대충 10년 넘게 보관하는 데이터를 여기에 저장하라고 이야기한다.
주로 아카이빙을 하는 금융, 의료나 공공 부문의 고객들을 위한 서비스이다.
이건 꺼낼 때도 몇 시간이 든다고 한다.
그만큼 가격은 가장 저렴하다.
오랫동안 데이터를 안 꺼내서 고장이 났을 경우도 있다.
이때 복원을 하게 될 텐데..
재밌는 게, 딥에서 복원을 할 때는 복원 사본과 원본에 대한 비용을 일시적으로 받는다고 한다.
가격이 싸다고는 하지만 주의할 필요는 있을 수도 있겠다.
S3 Outposts
온프레미스에 s3를 사용하고 싶을 때 사용하는 클래스.
말 그대로 S3와 같은 인터페이스와 기능을 온프레미스 환경에 구축한다.
리전으로 데이터를 전송하거나 하는 기능도 제공해준다.
minIO라는 S3와 호환될 수 있게 만들어진 오픈소스 스토리지가 있어서 엄청 쓸모 있을 것 같지는 않다는 게 내 생각.
요금
사용한 만큼만 지불하며, 다음에 대해 요금이 부과된다.
- 스토리지 요금
- 저장된 만큼 지불하는 요금.
- 클래스, 저장 기간(월 단위), 객체 크기에 따라 조금씩 다르다.
- 스탠다드와 Frequent Access에 대해서는 50, 450 테라 기준으로 분할하며, 나머지는 일괄이다.
- 글래시어는 최소 기간이 90일 180일 이런 식으로 조금 다르다.
- 요청 및 데이터 검색 요금
- 데이터를 저장하거나 조회할 때 지불하는 요금.
- 즉, 데이터를 넣거나 가져오는 api나 웹 콘솔로 접속해서 보는 모든 행위에 비용이 부과된다!
- HTTP로 요청을 하게 되는데 이때 delete와 cancel에 대해서는 무료라고 한다.
- 데이터 전송 및 전송 가속화 요금
- 요청에 대한 비용 따로, 그 데이터를 실제로 보낼 때 드는 네트워크 비용 따로라서 주의해야 한다!
- 인터넷 망
- 들어오는 양에 대해서는 무료다!
- 나가는 양에 대해서는 100기가까지는 기본 무료(이것도 s3만 그런 게 아니라 모든 서비스 다 합쳐서 100이란 거다)
- 다음부터는 이러한 정책에 따른다.
- Amazon CloudFront나, 다른 리전으로의 송신에 대해서는 기가당 0.02 달러가 발생한다.
- 다중 리전 관련 기능을 사용해서 다중 리전 액세스 포인트가 있다면..
- 이때 데이터를 액세스하는 경우 aws는 가장 가까운 리전으로 라우팅과 Global Accelerator, 즉 전송 가속화 기능을 제공한다.
- 이 각각에 대해서 또 비용이 발생하며, 이때는 수신 비용도 발생한다.
- 이때 데이터를 액세스하는 경우 aws는 가장 가까운 리전으로 라우팅과 Global Accelerator, 즉 전송 가속화 기능을 제공한다.
- Transfer Acceleration[2]
- 이밖에도 또 aws는 기본적으로 인터넷 전송 가속화를 시켜주는데, 이 속도가 일반보다 빠르면 이걸 활용하며 별도 비용을 부과한다..
- 즉, 수신 무료인 척 하지만 사실 돈 다 떼먹는다는 소리다.
- 보안
- 기본적으로 s3는 데이터를 암호화해주는데, 이중 암호화 기능을 사용하려고 하면 비용이 발생한다.
- 또한 s3에 접근 권한 요청을 보내면 또 비용이 발생한다....
- 접속 기록을 남기고 감사에 활용할 수 있게 하기 때문이라고 한다..
- 버킷 개수
- 버킷이 2000개 넘어가면 추가 비용이 발생한다.
- 데이터 관리 및 인사이트 기능 요금
- 배치 작업, 렌즈, 분석 등 모든 부분에서 요금이 발생
- 태그 다는 거에도 비용이 부과되니 섣불리 달지 말자!!!
- 복제 요금
- crr, srr에 대해서도 비용 발생!
- 변환 및 쿼리 기능 요금
- s3 객체에 개별로 Amazon Lambda를 설정할 수 있다.
- 이때 람다 자체 컴퓨팅 비용은 물론이고, s3 객체가 궁극적으로 반환하는 데이터 크기에 따라 또 비용이 부과된다.
프리 티어
프리 티어로는 이정도 쓸 수 있다.